﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Ecommerce.Model
{
    public class Produto: BaseData
    {
        public void Inserir(tb_pro_produto produto)
        {
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                //Obtenho a categoria
                produto.tb_cat_categoria = (from n in db.tb_cat_categoria where n.cat_idt_categoria.Equals(produto.tb_cat_categoria.cat_idt_categoria) select n).FirstOrDefault();

                db.tb_pro_produto.Add(produto);
                db.SaveChanges();
            }
        }

        public void Editar(tb_pro_produto produto)
        {
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                db.SaveChanges();
            }
        }

        public List<tb_pro_produto> Listar()
        {
            List<tb_pro_produto> produtos;

            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                produtos = (from n in db.tb_pro_produto.Include("tb_cat_categoria") where n.pro_flg_ativo.Equals(true) orderby n.pro_nom_produto select n).ToList();
            }
            return produtos;
        }

        public tb_pro_produto Obter(int identificador)
        {
            tb_pro_produto produto;

            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                produto = (from n in db.tb_pro_produto.Include("tb_cat_categoria") where n.pro_idt_produto.Equals(identificador) select n).FirstOrDefault();
            }
            return produto;
        }

        public void InserirImagem(tb_ipr_imagem_produto imagem)
        {
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                db.tb_ipr_imagem_produto.Add(imagem);
                db.SaveChanges();
            }
        }

        public void ExcluirImagem(int identificadorProduto)
        {
            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                var imagem = (from n in db.tb_ipr_imagem_produto where n.ipr_idt_imagem_produto.Equals(identificadorProduto) select n).FirstOrDefault();

                File.Delete(imagem.ipr_des_caminho_imagem);
                
                db.tb_ipr_imagem_produto.Remove(imagem);
                db.SaveChanges();
            }
        }

        public List<tb_ipr_imagem_produto> ListarImagem(int identificadorProduto)
        {
            List<tb_ipr_imagem_produto> imagens;

            using (EcommerceEntities db = new EcommerceEntities(this.InicializarStringConexao(), false))
            {
                imagens = (from n in db.tb_ipr_imagem_produto where n.pro_idt_produto.Equals(identificadorProduto) select n).ToList();
            }
            return imagens;
        }
    }
}
